package com.guanzhi.creation.singleton;

/**
 * 设计模式
 * <p> Package: com.guanzhi.creation.singleton </p>
 * <p> File: DclSingleton.java </p>
 * <p> Description:  (创建型模式-单例模式-懒汉式-双重检查锁)</p>
 * <p> Date: 2024/4/11 23:45</p>
 *
 * @author 观之
 * @version 1.0 （代码版本）
 * @email <a href="mailto:guanzhi55634@aliyun.com">观之</a>（邮箱）
 * @date 2024/4/11 23:45
 * @since jdk17（jdk版本）
 */
public class DclSingleton {
    // 使用volatile关键字确保instance在多线程环境下的可见性
    private volatile static DclSingleton dclSingleton;

    // 私有构造函数，防止外部通过new Singleton()来创建实例
    private DclSingleton() {
    }

    public static DclSingleton getInstance() {
        // 第一次检查实例是否已经创建
        if (dclSingleton == null) {
            // 同步块，确保只有一个线程能够进入
            synchronized (DclSingleton.class) {
                // 第二次检查实例是否已经创建
                if (dclSingleton == null) {
                    // 创建实例
                    dclSingleton = new DclSingleton();
                }
            }
        }
        return dclSingleton;
    }
}
